import CryptoJS from 'crypto-js';  

const AES_SALT = import.meta.env.VITE_AES_SALT || `chancms-aes-prd`


/**
 * AES加密
 * @param message 要加密的字符串
 * @param key 加密密钥
 * @returns 加密后的字符串，加密失败返回空字符串
 */
export const aesEncrypt = (obj , key = AES_SALT) => {
   
    try {
      const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), key)
      return encrypted.toString() //.toString(CryptoJS.enc.Base64)
    } catch (error) {
      console.error('AES加密失败:', error)
      return ''
    }
  }
  
  /**
   * AES解密
   * @param encryptedMessage 要解密的字符串
   * @param key 解密密钥（必须与加密时使用的密钥相同）
   * @returns 解密后的原始字符串，解密失败返回空字符串
   */
  export const aesDecrypt = (str , key  = AES_SALT) => {
    try {
      const decrypted = CryptoJS.AES.decrypt(str, key)
      return decrypted.toString(CryptoJS.enc.Utf8)
    } catch (error) {
      console.error('AES解密失败:', error)
      return ''
    }
  }


  // 测试
  const debug = false
  function test () { 
    const testObj = {
        name: '张三',
        age: 30,
        sex: '男'
      }
      const encrypted = aesEncrypt(testObj)
      console.log('加密结果:', encrypted)
      const decrypted = aesDecrypt(encrypted)
      console.log('解密结果:', decrypted)
      try {
        const decryptedObj = JSON.parse(decrypted)
        console.log('解密后的对象:', decryptedObj)
      } catch (error) {
        console.error('解密后的对象解析失败:', error)
      }
  }

  if (debug) {
    test()
  }